# vPresent is an immersive presentation creation and display application.
# Copyright (C) 2007 by Infiscape Corporation
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

'''
The purpose of this module is to capture data structures and code related
thereto in a place that allows multiple other modules in the opendocument
namespacae to get easy access.  The reason it is being done this way is to
avoid polluting the opendocument namespace as much as possible and to avoid
circular dependencies among the modules in the opendocument namespace.  As
the OpenDocument specification has more than a few circular dependencies, an
approach such as this is necessitated to avoid having circular dependencies
between the modules while still allowing for reasonably decent modularity.
'''

import opendocument


class EventListener(opendocument.DocumentNode):
   '''
   Base class for event listener types.  OpenDocument defines two: script
   event listeners (see script.EventListener) and presentation (see
   presentation.EventListener) event listeners.  Both can be contained by the
   office.EventListeners type.  Beyond that, they have litte or nothing in
   common, and that is why this class is so minimal.
   '''
   def __init__(self, attrs = None, childTypes = None):
      opendocument.DocumentNode.__init__(self, attrs, childTypes)

class Forms(opendocument.DocumentNode):
   '''
   Base class for the forms container type.  OpenDocument defines a single
   such container type (office:forms), but the circular dependencies between
   the office module and the drawing module prevent drawing from being able
   to access the contents of the office module.  Therefore, this class exists
   to break that circle.  office.Forms derives from this type, and where an
   explicit refernce to office.Forms is needed in the drawing module,
   core.Forms is used instead.
   '''
   def __init__(self, attrs = None, childTypes = None):
      opendocument.DocumentNode.__init__(self, attrs, childTypes)
